﻿/**
 * 
 * @file FITKPSModelSimpleShape.h
 * @brief  ParaSolid模型类
 * @author BaGuijun (baguijun@163.com)
 * @date 2024-08-01
 * 
 */
#ifndef  _FITKParaSolidModelSimpleShape_H_
#define  _FITKParaSolidModelSimpleShape_H_

#include "FITKAbstractPSModel.h"
#include "FITK_Interface/FITKInterfaceGeometry/FITKAbsGeoModelBox.h"
#include "FITK_Interface/FITKInterfaceGeometry/FITKAbsGeoModelCylinder.h"
#include "FITK_Interface/FITKInterfaceGeometry/FITKAbsGeoModelSphere.h"

namespace PS
{
    /**
     * @brief 长方体
     * @author BaGuijun (baguijun@163.com)
     * @date 2024-08-01
     */
    class FITKGeoCompPSAPI FITKPSModelBox :public Interface::FITKAbsGeoModelBox,
        public PSShapeAgent
    {
        //    FITKCLASS(OCC, FITKAbstractOCCModel);
    public:
        /**
         * @brief Construct a new FITKPSModelBox object
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        explicit FITKPSModelBox();
        /**
         * @brief Destroy the FITKPSModelBox object
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        virtual ~FITKPSModelBox() = default;
        /**
         * @brief 更新模型
         * @return true 更新成功
         * @return false 更新失败
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        virtual bool update() override;
    };

    class FITKGeoCompPSAPI FITKPSModelCylinder : public Interface::FITKAbsGeoModelCylinder,
        public PSShapeAgent
    {
        //       FITKCLASS(OCC, FITKAbstractOCCModel);
    public:
        /**
         * @brief Construct a new FITKPSModelBox object
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        explicit FITKPSModelCylinder();
        /**
         * @brief Destroy the FITKPSModelBox object
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        virtual ~FITKPSModelCylinder() = default;
        /**
         * @brief 更新模型
         * @return true 更新成功
         * @return false 更新失败
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        virtual bool update() override;
    };

    class FITKGeoCompPSAPI FITKPSModelSphere : public Interface::FITKAbsGeoModelSphere,
        public PSShapeAgent
    {
        //        FITKCLASS(OCC, FITKAbstractOCCModel);
    public:
        /**
         * @brief Construct a new FITKPSModelBox object
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        explicit FITKPSModelSphere();
        /**
         * @brief Destroy the FITKPSModelBox object
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        virtual ~FITKPSModelSphere() = default;
        /**
         * @brief 更新模型
         * @return true 更新成功
         * @return false 更新失败
         * @author BaGuijun (baguijun@163.com)
         * @date 2024-08-01
         */
        virtual bool update() override;
    };
}

#endif
